package com.gzsxy.JUC.lock;

import java.util.concurrent.atomic.AtomicReference;

/**
 * 自旋锁
 */
public class spinlockDemo {
    //AtomicReference  Thread 默认为null
    AtomicReference<Thread> atomicReference = new AtomicReference<>();


    //加锁
    public void myLock() {
        Thread thread = Thread.currentThread();
        System.out.println(Thread.currentThread().getName() + "==>mylock");

        //自旋锁
        while (!atomicReference.compareAndSet(null, thread)) {

        }
    }


    //解锁
    public void myUnLock() {
        Thread thread = Thread.currentThread();
        System.out.println(Thread.currentThread().getName() + "==>myUnLock");

        //自旋锁
        atomicReference.compareAndSet(thread, null);
    }


}
